# coding=utf-8


"""特殊方法__new__()和__init__()"""
"""内置函数init的self会自动读取__new__的返回值"""


class Person(object):  # person的id值不管是否调用实例对象都存在
    def __new__(cls, *args, **kwargs):  # 创建的cls的地址就是Person的地址
        print('cls的id值', id(cls))  # cls的地址即为Person的地址（id值）
        obj = super().__new__(cls)  # 此处创建了新的对象，会出现新的地址
        print('创建的obj的id值', id(obj))
        return obj

    def __init__(self, name, age):  # self自动读取__new__的返回值
        print('self的id值为', id(self))
        self.name = name
        self.age = age


print(id(object))  # object类的地址值与其他无关联，但是固定不变
print(id(Person))

p1 = Person('Li Hua', 22)  # 创建实例对象
print(id(p1))
